In the field of communication networks, redirection is a technique that causes a service provisioning environment such as a network server receiving a particular client request to not actually serve this request, but to redirect instead the client device to another network server. Redirection is a powerful tool for various purposes such as load sharing (also called workload distribution) among multiple service provisioning environments that are in operation simultaneously. Using redirection signaling, client requests can be evenly distributed among the individual environments, and the overall processing load can thus be shared within the service provisioning domain. Closely related to the task of load sharing is the aspect of redundancy, which ensures that a client request can still be served in case one or more of the service provisioning environments have to be taken out of service.
Modern communication networks are typically horizontally structured into individual layers with dedicated communication protocols being used on each layer. Load sharing mechanisms can be set up on various of these layers, such as on the network layer (layer 3 in the Open System Interconnection Basic Reference Model, or, in short, OSI model) or on the data link layer (layer 2 in the OSI model). Recent experience has shown that it is in many cases desirable to separate the individual service provisioning environments on the network level. Such a layer 3 separation has the advantage that the not uncommon failure of individual network components (including switches and connectors) will not lead to an outage of the whole service provisioning domain, but will only effect a single environment.
When separating the service provisioning environments on the network layer, each individual environment may receive a dedicated network address such as an Internet Protocol (IP) address. In modern communication networks, the Internet Protocol is the standard layer 3 protocol. According to IP version 4 (Ipv4), an IP network address is a 4 byte (32 bit) address having the format byte1.byte2.byte3.byte4, for example 127.0.0.33.
Due to their numerical structure, IP addresses are difficult to use (and in particular to remember) for end users. Moreover, IP addresses are often assigned dynamically and may thus change from time to time. To facilitate the addressing of network re-sources, the Domain Name System (DNS) has been deployed. DNS may be regarded as a distributed database that associates human-readable host names (also called domain names, such as “connect.ubs.com”) with abstract network addresses (such as numerical IP addresses). Upon request, DNS translates (or resolves) a domain name into the appropriate network address.
The resolving feature of DNS can be used for implementing load sharing on layer 3. In a DNS-based load sharing scenario, a domain name such as “connect.ubs.com” is assigned to a service provisioning domain, and each service provisioning environment within this domain receives a designated network address. Upon receiving a client request for resolving the domain name “connect.ubs.com”, DNS selects one of the network addresses of the service provisioning environments (e.g. according to a round robin scheme or in a random manner) and responds to the client request with the selected network address. Alternatively, the selection may be performed on the client side. In this case, DNS responds with a list of network addresses of the service provisioning environments, and the selection of one specific network address (environment) is performed by e.g. a browser installed on the client device.
The client software often includes a routine (typically implemented in the browser) which automatically requests a new resolution of a domain name during an ongoing session of the client device (such a new resolution may also be performed in response to a user request). The session may involve a service provisioning environment that has previously been assigned to the client device by the DNS-based or any other load sharing mechanism. In the case of a new domain name resolution during an ongoing session, the load sharing mechanism may return the network address of an environment that is different from the environment involved in the ongoing session. This scenario will lead to indefinite states as a second (parallel) session may be set up between the client device and the other environment. Moreover, time-outs in the first (initial) session may occur.
Accordingly, domain name resolution processes during an ongoing session may interfere with load sharing mechanisms. Thus, there is a need for systems and methods that provide a better user experience in the above and similar scenarios.